home *** CD-ROM | disk | FTP | other *** search
GW-BASIC | 1980-01-01 | 9.7 KB | 315 lines |
- 100 CLS :REM "NETWORK 1"
- 110 PRINT TAB(33);"****NETWORK****"
- 120 PRINT :PRINT "NOTE: ELEMENT VALUES MUST BE IN REACTANCE (OHMS)."
- 130 PRINT :BEEP :PRINT "HARD COPY REQUIRED? (Y/N)"
- 140 P$=INKEY$ :IF P$="" THEN 140 ELSE PRINT TAB(24);P$
- 150 IF P$<>"Y" AND P$<>"N" THEN 140
- 160 BEEP :PRINT "CONVERSION REQUIRED? (Y/N)"
- 170 A$=INKEY$ :IF A$="" THEN 170 ELSE PRINT TAB(24);A$ :IF A$="Y" THEN 2570
- 180 IF A$<>"N" THEN 170
- 190 PRINT :PRINT "THIS PROGRAM CALCULATES AND PLOTS CIRCUIT BANDWIDTH IN DB VS FREQUENCY."
- 200 FOR N=1 TO 4 :PRINT :NEXT N
- 210 PRINT " ******** ******** ******** ********"
- 220 PRINT " * * * * * * * *"
- 230 PRINT " ******** X1 ******* X3 ******* X5 ******* X7 *********>>"
- 240 PRINT " * * * * * * * * * * * * *"
- 250 PRINT " * ******** * ******** * ******** * ******** *"
- 260 PRINT " * * * * *"
- 270 PRINT "******* ******* ******* ******* *******"
- 280 PRINT "* * * * * * * * * *"
- 290 PRINT "* Rin * * X2 * * X4 * * X6 * * Rout*"
- 300 PRINT "* * * * * * * * * *"
- 310 PRINT "******* ******* ******* ******* *******"
- 320 PRINT :PRINT "ENTER CIRCUIT REACTANCES thus:"
- 330 PRINT :PRINT "A. USE POSITIVE NUMBERS for INDUCTORS"
- 340 PRINT "B. USE NEGATIVE NUMBERS for CAPACITORS"
- 350 PRINT "C. USE 0'S for MISSING (UNUSED) ELEMENTS" :DIM X(24),A(24)
- 360 PRINT :BEEP :INPUT "ENTER Rin ";RI
- 370 BEEP :INPUT "ENTER X1 ";X(1)
- 380 BEEP :INPUT "ENTER X2 ";X(2)
- 390 BEEP :INPUT "ENTER X3 ";X(3)
- 400 BEEP :INPUT "ENTER X4 ";X(4)
- 410 BEEP :INPUT "ENTER X5 ";X(5)
- 420 BEEP :INPUT "ENTER X6 ";X(6)
- 430 GOSUB 690
- 440 IF E$="E" THEN 670
- 450 BEEP :INPUT "ENTER X7 ";X(7)
- 460 BEEP :INPUT "ENTER X8 ";X(8)
- 470 BEEP :INPUT "ENTER X9 ";X(9)
- 480 BEEP :INPUT "ENTER X10 ";X(10)
- 490 BEEP :INPUT "ENTER X11 ";X(11)
- 500 BEEP :INPUT "ENTER X12 ";X(12)
- 510 GOSUB 690
- 520 IF E$="E" THEN 670
- 530 BEEP :INPUT "ENTER X13 ";X(13)
- 540 BEEP :INPUT "ENTER X14 ";X(14)
- 550 BEEP :INPUT "ENTER X15 ";X(15)
- 560 BEEP :INPUT "ENTER X16 ";X(16)
- 570 BEEP :INPUT "ENTER X17 ";X(17)
- 580 BEEP :INPUT "ENTER X18 ";X(18)
- 590 GOSUB 690
- 600 IF E$="E" THEN 670
- 610 BEEP :INPUT "ENTER X19 ";X(19)
- 620 BEEP :INPUT "ENTER X20 ";X(20)
- 630 BEEP :INPUT "ENTER X21 ";X(21)
- 640 BEEP :INPUT "ENTER X22 ";X(22)
- 650 BEEP :INPUT "ENTER X23 ";X(23)
- 660 BEEP :INPUT "ENTER X24 ";X(24)
- 670 BEEP :INPUT "ENTER Rout ";RO
- 680 BEEP :INPUT "ENTER FREQ (MHZ)";FO :GOTO 720
- 690 PRINT TAB(10);"PRESS E TO EXIT"
- 700 E$=INKEY$ :IF E$="" THEN 700
- 710 RETURN
- 720 IF P$<>"Y" THEN 760
- 730 LPRINT "NOTE:#1 ODD REACTANCES ARE IN SERIES,EVEN REACTANCES ARE IN SHUNT."
- 740 LPRINT "NOTE:#2 POSITIVE NUMBERS IDENTIFY INDUCTORS,NEGATIVE NUMBERS";
- 750 LPRINT "CAPACITORS." :LPRINT
- 760 FL=0 :CLS :REM SUBROUTINE TO PERMIT VALUE CHANGES
- 770 PRINT "TERM";TAB(8);"VALUE"TAB(40);"TERM";TAB(48);"VALUE"
- 780 PRINT "----";TAB(8);"-----";TAB(40);"----";TAB(48)"-----"
- 790 PRINT "1 X1 =";X(1);TAB(40);"2 X2 =";X(2) :PRINT"3 X3 =";X(3);TAB(40);"4 X4 =";X(4) :PRINT "5 X5 =";X(5);TAB(40);"6 X6 =";X(6) :PRINT "7 X7 =";X(7);TAB(40);"8 X8 =";X(8) :PRINT "9 X9 =";X(9);TAB(40);"10 X10=";X(10)
- 800 PRINT "11 X11=";X(11);TAB(40);"12 X12=";X(12) :PRINT "13 X13=";X(13);TAB(40);"14 X14=";X(14) :PRINT "15 X15=";X(15);TAB(40);"16 X16=";X(16) :PRINT "17 X17=";X(17);TAB(40);"18 X18=";X(18) :PRINT "19 X19=";X(19);TAB(40);
- 810 PRINT "20 X20=";X(20) :PRINT "21 X21=";X(21);TAB(40);"22 X22=";X(22) :PRINT "23 X23=";X(23);TAB(40);"24 X24=";X(24) :PRINT "25 Rin=";RI"ohms";TAB(40);"26 Rout=";RO;"ohms" :PRINT "27 FREQ.=";FO;"Mhz"
- 820 PRINT :BEEP :PRINT "ANY CHANGES (Y/N)"
- 830 B$=INKEY$ :IF B$="" THEN 830
- 840 IF B$="N" THEN 1160
- 850 IF B$<>"Y" THEN 830
- 860 PRINT :BEEP :INPUT "ENTER TERM#,NEW VALUE ";G,H
- 870 ON G GOTO 880,890,900,910,920,930,940,950,960,970,980,990,1000,1010,1020,1030,1040,1050,1060,1070,1080,1090,1100,1110,1120,1130,1140
- 880 X(1)=H :GOTO 760
- 890 X(2)=H :GOTO 760
- 900 X(3)=H :GOTO 760
- 910 X(4)=H :GOTO 760
- 920 X(5)=H :GOTO 760
- 930 X(6)=H :GOTO 760
- 940 X(7)=H :GOTO 760
- 950 X(8)=H :GOTO 760
- 960 X(9)=H :GOTO 760
- 970 X(10)=H :GOTO 760
- 980 X(11)=H :GOTO 760
- 990 X(12)=H :GOTO 760
- 1000 X(13)=H :GOTO 760
- 1010 X(14)=H :GOTO 760
- 1020 X(15)=H :GOTO 760
- 1030 X(16)=H :GOTO 760
- 1040 X(17)=H :GOTO 760
- 1050 X(18)=H :GOTO 760
- 1060 X(19)=H :GOTO 760
- 1070 X(20)=H :GOTO 760
- 1080 X(21)=H :GOTO 760
- 1090 X(22)=H :GOTO 760
- 1100 X(23)=H :GOTO 760
- 1110 X(24)=H :GOTO 760
- 1120 RI=H :GOTO 760
- 1130 RO=H :GOTO 760
- 1140 FO=H :GOTO 760
- 1150 FO=H :GOTO 760
- 1160 FL=O :IF P$<>"Y" THEN 1240
- 1170 LPRINT "X1=";X(1);" X2=";X(2);" X3=";X(3);" X4=";X(4);" X5=";X(5)
- 1180 LPRINT "X6=";X(6);" X7=";X(7);" X8=";X(8);" X9=";X(9);" X10=";X(10)
- 1190 LPRINT "X11=";X(11);" X12=";X(12);" X13=";X(13);" X14=";X(14);
- 1200 LPRINT " X15=";X(15) :LPRINT "X16=";X(16);"X17=";X(17);" X18=";X(18);
- 1210 LPRINT " X19=";X(19);" X20=";X(20) :LPRINT "X21=";X(21);
- 1220 LPRINT " X22=";X(22);" X23=";X(23);" X24=";X(24)
- 1230 LPRINT "Rin=";RI;"ohms";"; Rout=";RO;"ohms";"; FREQ.=";FO;"Mhz"
- 1240 CLS :PRINT "SELECT :" :PRINT :PRINT TAB(10);"SCALE";TAB(40);"BANDWIDTH"
- 1250 PRINT TAB(10);"-----";TAB(40);"---------"
- 1260 PRINT "1. DB vs FREQUENCY TABLE";TAB(40);"1. 100%" :PRINT "2. 0 to 6.0";
- 1270 PRINT " DB PLOT on SCREEN";TAB(40);"2. 50%" :PRINT "3. 0 to 60 DB";
- 1280 PRINT " PLOT on SCREEN";TAB(40);"3. 25%" :PRINT "4. 0 to 6.0 DB";
- 1290 PRINT " PRINTER PLOT";TAB(40);"4. 10%" :PRINT "5. 0 to 60 DB";
- 1300 PRINT " PRINTER PLOT";TAB(40);"5. 5%" :PRINT TAB(40);"6. 1%"
- 1310 PRINT :BEEP :INPUT "(SCALE ,BW)";G,H :IF G>5 THEN 1240
- 1320 IF H=1 THEN G1=5 :G2=15 :G3=0.2 :GOTO 1380
- 1330 IF H=2 THEN G1=7.5 :G2=12.5 :G3=0.1 :GOTO 1380
- 1340 IF H=3 THEN G1=8.75 :G2=11.25 :G3=0.05 :GOTO 1380
- 1350 IF H=4 THEN G1=9.5 :G2=10.5 :G3=0.02 :GOTO 1380
- 1360 IF H=5 THEN G1=9.75 :G2=10.25 :G3=0.01 :GOTO 1380
- 1370 IF H<>6 THEN 1240 ELSE G1=9+9/10 :G2=10.1 :G3=0.005
- 1380 IF G=2 OR G=3 THEN G3=G3*2.5
- 1390 FOR N=G1 TO G2 STEP G3
- 1400 J=0 :JX=0 :RX=RO
- 1410 I=N/10 :FX=FO*I :REM COMBINE SERIES & PARALLEL
- 1420 FOR Z=1 TO 23 :IF X(Z)>0 THEN 1440
- 1430 A(Z)=X(Z)/I :GOTO 1450
- 1440 A(Z)=X(Z)*I
- 1450 NEXT Z
- 1460 J=0 :JX=0 :RX=RO
- 1470 J=A(24) :GOSUB 1910
- 1480 J=A(23)+JX :GOSUB 1860
- 1490 J=A(22) :GOSUB 1910
- 1500 J=A(21)+JX :GOSUB 1860
- 1510 J=A(20) :GOSUB 1910
- 1520 J=A(19)+JX :GOSUB 1860
- 1530 J=A(18) :GOSUB 1910
- 1540 J=A(17)+JX :GOSUB 1860
- 1550 J=A(16) :GOSUB 1910
- 1560 J=A(15)+JX :GOSUB 1860
- 1570 J=A(14) :GOSUB 1910
- 1580 J=A(13)+JX :GOSUB 1860
- 1590 J=A(12) :GOSUB 1910
- 1600 J=A(11)+JX :GOSUB 1860
- 1610 J=A(10) :GOSUB 1910
- 1620 J=A(9)+JX :GOSUB 1860
- 1630 J=A(8) :GOSUB 1910
- 1640 J=A(7)+JX :GOSUB 1860
- 1650 J=A(6) :GOSUB 1910
- 1660 J=A(5)+JX :GOSUB 1860
- 1670 J=A(4) :GOSUB 1910
- 1680 J=A(3)+JX :GOSUB 1860
- 1690 J=A(2) :GOSUB 1910
- 1700 J=A(1)+JX
- 1710 R=SQR((RX+RI)^2+J^2)
- 1720 PX=RX/R^2 :PR=PX*RI*4
- 1730 DB=10*(LOG(PR)/LOG(10))
- 1740 IF G=1 THEN 2400 :REM ATTEN.TABLE(SCREEN/PRINTER)
- 1750 IF G=2 THEN 2000 :REM 0-6 DB SCREEN PLOT
- 1760 IF G=3 THEN 2200 :REM 0-60 DB SCREEN PLOT
- 1770 IF G=4 THEN 2720 :REM 6 DB PRINTER PLOT
- 1780 IF G<>5 THEN 1240 ELSE 2980 :REM 60 DB PRINTER PLOT
- 1790 NEXT N :CLOSE #1
- 1800 PRINT :PRINT "PRESS D FOR NEW DATA or NEW SCALE"
- 1810 D$=INKEY$ :IF D$="" THEN 1810
- 1820 IF D$="D" THEN 760
- 1830 PRINT :PRINT "CONTINUE? (Y/N)"
- 1840 C$=INKEY$ :IF C$="" THEN 1840
- 1850 IF C$="Y" THEN 100 ELSE END
- 1860 IF J=0 THEN 1900 :REM PARALLEL
- 1870 RS=RX
- 1880 RX=RS*(1+(J/RS)^2)
- 1890 JX=(RS^2+J^2)/J
- 1900 RETURN
- 1910 IF J+JX=0 THEN 1990 :REM COMBINE
- 1920 IF JX=0 THEN 1960
- 1930 IF J=0 THEN 1970
- 1940 JX=1/(1/JX+1/J)
- 1950 GOTO 1970
- 1960 JX=J
- 1970 RS=RX/(1+(RX/JX)^2) :REM SERIES
- 1980 JX=RS*RX/JX :RX=RS
- 1990 RETURN
- 2000 IF FL=1 THEN 2040
- 2010 CLS
- 2020 PRINT " -DB>> 6 5 4 3 2 1 0"
- 2030 PRINT "FREQ(Mhz)+----+----+----+----+----+----+----+----+----+----+----+----+"
- 2040 FL=1
- 2050 Q=DB :Q=(Q+6)*10+10 :Q=INT(Q)
- 2060 FX=CINT(FX*10)/10 :PRINT TAB(1);FX;
- 2070 IF Q<10 THEN 2100
- 2080 IF Q=10 THEN 2110
- 2090 IF Q>10 THEN 2120
- 2100 PRINT TAB(9);CHR$(60); :KT=1 :GOTO 2120
- 2110 PRINT TAB(10);CHR$(42); :KT=1 :GOTO 2130
- 2120 PRINT TAB(10);CHR$(124);
- 2130 FOR U=20 TO 70 STEP 10
- 2140 IF Q>U THEN 2170
- 2150 IF KT=1 THEN 2170
- 2160 PRINT TAB(Q);CHR$(42); :KT=1
- 2170 IF U<>Q THEN PRINT TAB(U);CHR$(43);
- 2180 NEXT U
- 2190 KT=0 :GOTO 1790
- 2200 IF FL=1 THEN 2240
- 2210 CLS
- 2220 PRINT " -DB>> 60 55 50 45 40 35 30 25 20 15 10 5 0"
- 2230 PRINT "FREQ(Mhz)+----+----+----+----+----+----+----+----+----+----+----+----+"
- 2240 FL=1
- 2250 Q=DB :Q=(Q+60)+10 :Q=INT(Q)
- 2260 FX=CINT(FX*10)/10 :PRINT TAB(1);FX;
- 2270 IF Q<10 THEN 2300
- 2280 IF Q=10 THEN 2310
- 2290 IF Q>10 THEN 2320
- 2300 PRINT TAB(9);CHR$(60); :KT=1 :GOTO 2320
- 2310 PRINT TAB(10);CHR$(42); :KT=1 :GOTO 2330
- 2320 PRINT TAB(10);CHR$(124);
- 2330 FOR U=20 TO 70 STEP 10
- 2340 IF Q>U THEN 2370
- 2350 IF KT=1 THEN 2370
- 2360 PRINT TAB(Q);CHR$(42); :KT=1
- 2370 IF U<>Q THEN PRINT TAB(U);CHR$(43);
- 2380 NEXT U
- 2390 KT=0 :GOTO 1790
- 2400 IF FL=1 THEN 2470 :REM ATTEN TABLE SCREEN/PRINTER
- 2410 CLS :IF P$<>"Y" THEN 2450
- 2420 LPRINT :LPRINT TAB(6);"FREQ.(Mhz)";TAB(18);"ATTEN.(DB) TITLE:____________";
- 2430 LPRINT "___________________"
- 2440 GOTO 2470
- 2450 PRINT TAB(6);"FREQ.";TAB(18);"ATTEN.(DB)"
- 2460 PRINT " ----- ----------"
- 2470 FL=1
- 2480 Q=INT(DB*100)/100 :FX=CINT(FX*10)/10
- 2490 IF P$<>"Y" THEN 2530
- 2500 IF CINT(FO*10)/10=FX THEN 2510 ELSE 2520
- 2510 LPRINT TAB(5);FX;TAB(13);"<FO>";TAB(18);Q :GOTO 1790
- 2520 LPRINT TAB(5);FX;TAB(18);Q :GOTO 1790
- 2530 IF FX=FO THEN 2540 ELSE 2550
- 2540 PRINT TAB(5);FX;TAB(13);"<FO>";TAB(18);Q :GOTO 1790
- 2550 PRINT TAB(5);FX;TAB(18);Q
- 2560 GOTO 1790
- 2570 CLS :PI=4*ATN(1) :REM XL & XC COMPUTATIONS
- 2580 BEEP :INPUT "ENTER FREQENCY (Mhz) ";FO
- 2590 PRINT :BEEP :INPUT "ELEMENT TYPE L or C ";X$
- 2600 IF X$="L" THEN 2620
- 2610 IF X$="C" THEN 2670 ELSE 190
- 2620 PRINT :BEEP :INPUT "ENTER INDUCTANCE (nh) ";C :REM INDUCTIVE REACTANCE
- 2630 PRINT
- 2640 XL=2*PI*FO*10^6*C*10^-9 :XL=INT(XL*100)/100
- 2650 PRINT " XL= ";XL;"ohms"
- 2660 XL=0 :GOTO 2590
- 2670 PRINT :BEEP :INPUT "ENTER CAPACITANCE (pf)";B :REM CAPACITIVE REACTANCE
- 2680 PRINT
- 2690 XC=-1/(2*PI*FO*10^6*B*10^-12) :XC=INT(XC*100)/100
- 2700 PRINT " XC= ";XC;"ohms"
- 2710 XC=0 :GOTO 2590
- 2720 IF FL=1 THEN 2820 :REM 6DB PRINTER PLOT
- 2730 CLS :LPRINT "TITLE:_________________________________________ DATE:_______";
- 2740 LPRINT "_________" :LPRINT
- 2750 LPRINT "FREQ(Mhz)";TAB(30);"<< ATTENUATION DB >>"
- 2760 LPRINT CHR$(165); :FOR U=10 TO 70 STEP 10
- 2770 M=U/10
- 2780 LPRINT TAB(U-1);7-M; :NEXT U :LPRINT
- 2790 FOR U=10 TO 70
- 2800 LPRINT TAB(U);CHR$(243);
- 2810 NEXT U
- 2820 FL=1
- 2830 Q=DB :Q=(Q+6)*10+10 :Q=INT(Q)
- 2840 FX=CINT(FX*10)/10 :LPRINT TAB(1);FX;
- 2850 IF Q<10 THEN 2880
- 2860 IF Q=10 THEN 2890
- 2870 IF Q>10 THEN 2900
- 2880 LPRINT TAB(9);CHR$(60); :KT=1 :GOTO 2900
- 2890 LPRINT TAB(10);CHR$(42); :KT=1 :GOTO 2910
- 2900 LPRINT TAB(10);CHR$(124);
- 2910 FOR U=20 TO 70 STEP 10
- 2920 IF Q>U THEN 2950
- 2930 IF KT=1 THEN 2950
- 2940 LPRINT TAB(Q);CHR$(42); :KT=1
- 2950 IF U<>Q THEN LPRINT TAB(U);CHR$(43);
- 2960 NEXT U
- 2970 KT=0 :GOTO 1790
- 2980 IF FL=1 THEN 3080 :REM 60 DB PRINTER PLOT
- 2990 CLS :LPRINT "TITLE:_________________________________________ DATE:_______";
- 3000 LPRINT "_________" :LPRINT
- 3010 LPRINT "FREQ(Mhz)";TAB(30);"<< ATTENUATION DB >>"
- 3020 LPRINT CHR$(165); :FOR U=10 TO 70 STEP 10
- 3030 M=U
- 3040 LPRINT TAB(U-1);70-M; :NEXT U :LPRINT
- 3050 FOR U=10 TO 70
- 3060 LPRINT TAB(U);CHR$(243);
- 3070 NEXT U
- 3080 FL=1
- 3090 Q=DB :Q=(Q+60)+10 :Q=INT(Q)
- 3100 FX=CINT(FX*10)/10 :LPRINT TAB(1);FX;
- 3110 IF Q<10 THEN 3140
- 3120 IF Q=10 THEN 3150
- 3130 IF Q>10 THEN 3160
- 3140 LPRINT TAB(9);CHR$(60); :KT=1 :GOTO 3160
- 3150 LPRINT TAB(10);CHR$(42); :KT=1 :GOTO 3170
- 3160 LPRINT TAB(10);CHR$(124);
- 3170 FOR U=20 TO 70 STEP 10
- 3180 IF Q>U THEN 3210
- 3190 IF KT=1 THEN 3210
- 3200 LPRINT TAB(Q);CHR$(42); :KT=1
- 3210 IF U<>Q THEN LPRINT TAB(U);CHR$(43);
- 3220 NEXT U
- 3230 KT=0 :GOTO 1790
-